package com.cjack.frenchexcel.util;

import java.util.Calendar;
import java.util.regex.Pattern;

public class DateValidator {

    // 正则表达式规则，用于匹配日期格式 YYYY-MM-DD
    private static final String DATE_PATTERN = "^(19|20)\\d{2}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$";
    private static final Pattern pattern = Pattern.compile(DATE_PATTERN);

    /**
     * 检查输入的日期字符串是否有效。
     *
     * @param dateString 日期字符串，格式为 "YYYY-MM-DD"。
     * @return 如果日期有效返回 true，否则返回 false。
     */
    public static boolean isValidDate(String dateString) {
        // 检查日期格式是否正确
        if (!pattern.matcher(dateString).matches()) {
            return false;
        }

        // 解析日期字符串
        String[] parts = dateString.split("-");
        int year = Integer.parseInt(parts[0]);
        int month = Integer.parseInt(parts[1]);
        int day = Integer.parseInt(parts[2]);

        // 使用 Calendar 来检查天数是否有效
        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1);
        int maxDayOfMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        return day <= maxDayOfMonth;
    }

    public static void main(String[] args) {
        String date = "2024-55-10";
        System.out.println("The date " + date + " is " + (isValidDate(date) ? "valid." : "invalid."));
    }
}
